// 图书信息的路由器文件
// 1. 导入Express框架
const express = require("express");
// 导入图书信息操作的数据模型对象
const booksModel = require("../models/booksModel");
// 导入上传组件formidable
const formidable = require('formidable');
// 2. 创建路由对象
const router = express.Router();
// 3. 配置路由
// 图书列表接口
router.get("/", async (req, res) => {
    try {
        // 同步查询所有图书信息
        //const data = await booksModel.find({});
        // 获取当前页(默认第一页)
        let { pageIndex=1 } = req.query
        const size = 10; // 页大小
        const total = await booksModel.find({}).count()
        const totalPage = Math.ceil(total / size)
        // 根据pageIndex 当前页，计算出要跳过几条 skipNum
        const skipNum = (pageIndex - 1) * size
        let booksList = await booksModel.find().skip(skipNum).limit(size)
        res.json({code:0, msg:'获取成功', data:booksList, totalPage:totalPage, page:pageIndex})
    } catch (error) {
        console.log(error);
        res.json({code:1, msg:'获取信息失败'});
    }
});

// 添加图书信息接口
router.post("/", (req, res) => {
    //创建表单对象
    const form = formidable({
        //设置文件上传的目录
        uploadDir: __dirname + '/../public/uploads',
        //设置保留文件的后缀
        keepExtensions: true
    });
    // 获取要求添加的信息
    //解析表单内容
    form.parse(req, async (err, fields, files) => {
        if (err) throw err;
        // 显示表单信息与上传文件信息
        res.json({ fields, files });
        
        // 获取上传后的文件名
        let img = files.img.newFilename;
        //准备插入数据库的数据
        const data = {
            ...fields, //扩展运算符
            img
        }
        console.log(data);
        /*
        try {
            // 调用数据模型执行信息添加操作
            await booksModel.create(data)
            res.json({code:0, msg:'添加成功'});
        } catch (error) {
            console.log(error);
            res.json({code:1001, msg:'添加失败'});
        }
        */
    })
    
});

// 删除图书信息接口
router.delete("/:id",async (req, res) => {
    try {
        // 从req中获取要删除信息的id号
        let id = req.params.id;
        await booksModel.deleteOne({_id: id})
        res.json({code:0, msg:'删除成功'});
    } catch (error) {
        console.log(error);
        res.json({code:1, msg:'删除失败'});
    } 
});

//4. 导出路由（暴露）
module.exports = router;